/* eslint-disable jsdoc/no-restricted-syntax */
export * from "./define.js";
/**
 * @param {ng.ui.bootstrap.IModalSettings} opt
 * @return
 */
/* #__NO_SIDE_EFFECTS__ */
/**
 * @template {ng.ui.bootstrap.IModalSettings} T
 * @param {T} opt
 * @returns {T}
 */
export function defineModalSetting(opt) {
  return opt;
}
// /**
//  * @todo
//  * @param {*} opt
//  * @return
//  */
// export function defineDecorator(opt) {
//   return opt;
// }
/**
 * @param {string} h1
 * @param {string} h2
 * @return
 */
/* #__NO_SIDE_EFFECTS__ */
/**
 * @param {string} h1
 * @param {string} h2
 * @returns {string}
 */
export function mergeHTML(h1, h2) {
  if (h1 && h2) {
    return h1 + h2;
  } else if (h1) {
    return h1;
  } else if (h2) {
    return h2;
  }
  return "";
}

/* #__NO_SIDE_EFFECTS__ */
// /**
//  * @param {string | undefined | null} h1
//  * @param {string | undefined | null} h2
//  * @returns {string}
//  */
// export function mergeHTMLSuspicion(h1, h2) {
//   if (!h1 && !h2) {
//     return "";
//   } else if (h1) {
//     return h1;
//   } else if (h2) {
//     return h2;
//   }
//   return h1 + h2;
// }

/**
 * @template {any} T
 */
export class NullCheckArray extends Array {
  constructor() {
    super();
  }

  /**
   * @template T
   * @override
   * @param {[] | T[]} items
   * @returns {number}
   */
  push(...items) {
    if (!items || items.length === 0) {
      //  ^? should be `[]`
      return this.length;
    }
    for (const item of items) {
      if (item) {
        super.push(item);
      }
    }
    return this.length;
  }
}
